﻿#include "MyGrayImage.h"
#include "MyRGBImage.h"

#define GRAY_HIST "Luoc do anh xam"
#define BASIC "Luoc do gian do tuong phan - basic"
#define FVP "Luoc do gian do tuong phan - cai tien 1"
#define CTF "Luoc do gian do tuong phan - cai tien 2"


void main(int n, char*argv[]){

	if(n<2)
	{
		printf("Tham so dong lenh sai, nhap lai!\n");
		return;
	}
	
	
	IplImage *img=cvLoadImage(argv[1]);

	//Tạo ảnh xám
	MyGrayImage grayImg(img);

	//Tạo ảnh màu
	MyRGBImage rgbImg(img);

	//Điều chỉnh độ sáng ảnh màu
	if(strcmpi("-a",argv[2])==0){
		
	}

	//Điều chỉnh độ tương phản ảnh màu
	else if(strcmpi("-b",argv[2])==0)
	{
	}

	//Giãn độ tương phản ảnh xám
	else if(strcmpi("-s",argv[2])==0)
	{
		//Hiển thị lược đồ ảnh xám
		cvNamedWindow(GRAY_HIST);
		cvShowImage(GRAY_HIST,grayImg.DrawHistogram(4,300));
		
		

		//Khai báo 1 ảnh xám là ảnh đã giản độ tương phản
		MyGrayImage stretchImg;
		
		//Lấy giá trị c,d
		int c = atoi(argv[4]);
		int d = atoi(argv[5]);
		
		//Giản độ tương phản basic
		if(strcmpi("-bsc",argv[3])==0)
		{
			
			stretchImg.grayImg=grayImg.StretchContrastBasic(c,d);
			
			
			cvNamedWindow(BASIC);
			cvShowImage(BASIC,stretchImg.DrawHistogram(4,300));

			cvWaitKey();

			cvReleaseImage(&stretchImg.grayImg);
			cvDestroyWindow(BASIC);
			
		}

		//Giản độ tương phản cải tiến 1
		else if(strcmpi("-fvp",argv[3])==0)
		{
			stretchImg.grayImg=grayImg.StretchContrastAdvance1(c,d);
			
			cvNamedWindow(FVP);
			cvShowImage(FVP,stretchImg.DrawHistogram(4,300));

			cvWaitKey();

			cvReleaseImage(&stretchImg.grayImg);
			cvDestroyWindow(FVP);

			}
		else if(strcmpi("-ctf",argv[3])==0)
		{
			stretchImg.grayImg=grayImg.StretchContrastAdvance2(c,d);
			
			cvNamedWindow(CTF);
			cvShowImage(CTF,stretchImg.DrawHistogram(4,300));

			cvWaitKey();

			cvReleaseImage(&stretchImg.grayImg);
			cvDestroyWindow(CTF);
		}
		else
		{
			printf("Tham so dong len khong ton tai \n");

		}
		cvWaitKey();
		cvReleaseImage(&grayImg.grayImg);
		cvDestroyWindow("Gray Image Histogram");
	}

	//Cân bằng lược đồ ảnh màu
	else if(strcmpi("-e",argv[2])==0)
	{
		
	}

	//Trường hợp khác --> error
	else
	{

	}

	cvReleaseImage(&img);
	

	
}